import BadgeGroup, { UniverTypes } from '@/components/BadgeGroup'

# Deploying with Docker

<BadgeGroup values={[UniverTypes.GENERAL]} value={UniverTypes.GENERAL} />

Get up and running quickly with our Docker deployment solution for the Univer service, using Docker Compose for a hassle-free setup.

## System Requirements

1. CPU: Single core
2. RAM: 2GB
3. Storage: 10GB

Ensure you have [Docker version 23 or higher](https://docs.docker.com/engine/install/).

## Technical Stack

Our architecture is built on PostgreSQL and RabbitMQ.

## Quick start

Compatible with Linux, Mac, and Windows/WSL environments.

```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/dream-num/helm-charts/main/install.sh)"
```

Confirm that the document service has successfully started.

Access http://localhost:3010 in your web browser to create a new blank document, which will then redirect you to the document link (Internet Explorer is not supported).

![Example Image](./docker/img1.png)

Also, verify the successful startup of the collaboration service.

For a comprehensive test, try accessing it in various browsers or in private browsing mode to experience the full collaborative capabilities.

![Example Image](./docker/img2.png)

## Port Check

Ensure that the specified ports are not in use; if they are, terminate the conflicting processes before attempting to start again.

Default ports for Univer services are listed below:

| service Name | Port Number |  	Function |
| --- | --- | --- |
| universer | 8000 | Serves API over HTTP |
| univer-minio | 9000 | Acts as the S3 storage server |
| univer-client | 3010 | Provides the frontend interface |

## Troubleshooting

### Having trouble starting on a Windows OS?

The `run.sh` script operates in a `bash` environment. To get it up and running, you'll need to use either Git Bash/MinGW or a WSL environment.

### Can't use the save-as-table function?

You'll need to tweak the `.env` file. Set `S3_ENDPOINT_PUBLIC` to your local network IP to get the `save as` function to work properly.

```diff
- S3_ENDPOINT_PUBLIC=http://univer-minio:9000
+ S3_ENDPOINT_PUBLIC=http://<Your Local Network IP>:19000
```

### How to find error when server start failed ?

You can use `docker compose logs` to see server logs, for example:
```shell
# see universer latest 20 minute logs
docker compose logs -f universer --since 20m
```

If you need assistance, feel free to contact us.

### How to restart, stop, uninstall server ?
```shell
# restart server
bash run.sh

# stop server
docker compose stop

# uninstall
docker compose down

# uninstall and clean data
docker compose down --volumes
```

### How to change host port the server used ?

You can update the `.env` file, then run `bash run.sh`

```
# host ports
HOST_NGINX_PORT=8000
HOST_MINIO_PORT=19000
HOST_GRAFANA_PORT=13000
```
